package com.sh.排序算法;

public class SortAlgorithms {

    // 示例数组（你可以自己复制一份进行修改）
    static int[] arr1 = {5, 2, 9, 1, 5, 6};
    static int[] arr2 = {1, 2, 3, 4, 5, 6};
    static int[] arr3 = {6, 5, 4, 3, 2, 1};
    static int[] arr4 = {10, -1, 2, 8, 0, 5};
    static int[] arr5 = {};
    static int[] arr6 = {42};


    // 主方法，用于测试
    public static void main(String[] args) {
        int[] testArray = arr1.clone();  // 替换为你要测试的数组
        System.out.println("排序前：");
        printArray(testArray);

        selectionSort(testArray);  // 替换为你要测试的方法

        System.out.println("排序后：");
        printArray(testArray);
    }

    // 工具方法：打印数组
    public static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    // 待你实现的方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    // 冒泡排序
    public static void bubbleSort(int[] arr) {
        // TODO: 在这里实现冒泡排序
        int length = arr.length;   // 数组长度
        for (int i = 0; i < length - 1; i++) {
            boolean swapped = false;
            for (int j = 0; j < length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    swapped = true;
                }
            }
            if (swapped == false) {
                break;
            }
        }
    }

    // 选择排序
    public static void selectionSort(int[] arr) {
        // TODO: 在这里实现选择排序
        int length = arr.length;
        for (int i = 0; i < length; i++) {
            int minIndex = i;
            // 找到最小值的位置
            for (int j = i + 1; j < length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // 当前位置交换
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }

    // 插入排序
    public static void insertionSort(int[] arr) {
        // TODO: 在这里实现插入排序
    }

    // 快速排序
    public static void quickSort(int[] arr, int left, int right) {
        // TODO: 在这里实现快速排序
    }

    // 归并排序
    public static void mergeSort(int[] arr, int left, int right) {
        // TODO: 在这里实现归并排序
    }


}
